package ru.tapublog.lib.samsungwallet.impl.converter;

import ru.tapublog.lib.samsungwallet.api.model.AbstractAlert;
import ru.tapublog.lib.samsungwallet.api.model.DateAlert;
import ru.tapublog.lib.samsungwallet.api.model.GeofenceAlert;
import ru.tapublog.lib.samsungwallet.impl.dao.AlertDAO;
import ru.tapublog.lib.samsungwallet.impl.dao.DateAlertDAO;
import ru.tapublog.lib.samsungwallet.impl.dao.GeofenceAlertDAO;

public class AlertConverter {

	public static AlertDAO convert(AbstractAlert alert) {
		if (isDateAlert(alert))
			return convertDateAlert((DateAlert) alert);
		else
			return convertGeofenceAlert((GeofenceAlert) alert);
	}

	private static boolean isDateAlert(AbstractAlert alert) {
		return alert instanceof DateAlert;
	}

	public static AlertDAO convertDateAlert(DateAlert alert) {
		AlertDAO dao = new AlertDAO(alert.getId());
		DateAlertDAO dAlertDao = new DateAlertDAO();
		dAlertDao.setBeforeInMins(alert.getBeforeInMins());
		dAlertDao.setFormat(DateConverter.DATE_FORMAT);
		dAlertDao.setValue(DateConverter.convertDate(alert.getDate()));
		dao.setDateAlert(dAlertDao);
		return dao;
	}

	public static AlertDAO convertGeofenceAlert(GeofenceAlert alert) {
		AlertDAO dao = new AlertDAO(alert.getId());
		GeofenceAlertDAO dAlertDao = new GeofenceAlertDAO();
		dAlertDao.setAltitude(alert.getAltitude());
		dAlertDao.setLatitude(alert.getLatitude());
		dAlertDao.setLongitude(alert.getLongitude());
		dAlertDao.setRange(alert.getRange());
		dAlertDao.setValue(alert.getPlaceName());
		dao.setGeofenceAlert(dAlertDao);
		return dao;
	}
}
